<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function Fn() {
            this.x = 100;
            this.y = 200;
            this.getX = function() {
                console.log(this.x);
            }
        }
        Fn.prototype = {
            y: 400,
            getX: function() {
                console.log(this.x);
            },
            getY: function() {
                console.log(this.y);
            },
            sum: function() {
                console.log(this.x + this.y);
            }
        }
        var f1 = new Fn; // 这里不加括号也可以调用函数
        var f2 = new Fn;
        console.log(f1.getX === f2.getX); // false
        console.log(f1.getY === f2.getY); // true
        console.log(f1.__proto__.getY === Fn.prototype.getY); // true
        console.log(f1.__proto__.getX === f2.getX); //false
        console.log(f1.getX === Fn.prototype.getX); // false
        console.log(f1.constructor); // Object constructor属性是先看自己有没有,没有在根据__proto__属性往上找
        console.log(Fn.prototype.__proto__.constructor); // Object
        f1.getX(); // 100
        f1.__proto__.getX(); // undefined
        f2.getY(); // 200
        Fn.prototype.getY(); // 400
        f1.sum(); // 300
    </script>
</body>

</html>